Soru & Cevap

Android activity back stack sorunsali ?

09.06.2015 - 11:44

Merhaba arkadaslar start activity derken intent ile birlikte cesitli flaglar set edebiliyoruz bunlar , new_task , single_top,clear_top ve clear_task acikcasi bunlarla cok akfam karisti. Androidin developer sitesinden baktigim zaman ise baya bir corba oldum. Acikcasi benim yapmak istedigim su

 

A --> B --> C --> D

ben d den farkli bir activity ya da daha oncekilerden cagirdigim zaman d ve oncesini back stacktan nasil silerim? Cesitli combinasyonalr gordum new_task ve clear_top ile birlikte kullanilan. siz ne dersiniz

453 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user cnkaptan
cnkaptan
10.06.2015 - 11:59

Kendi kendime cevap vereyim madem birseyler buldum

 

Farzedelim A --> B --> C -->  D --> E boyle bir activity historysi yaratalim E'den  B ye  gectigimiz de bunu iki sekilde deneyelim;

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

flaglarini ekleyip Bye gectimiz zaman back tusuna bastigimiz vakit uygulama direk cikar yani history temizlenir

tekrar o uygulamayi actigmizda ise uygulamanin main activitysi hangisi ise o acilir.

 

ikinci olarak;

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);

ekleyip B ye gectigimizde ise  aradaki C , D ve E silinir ve back tusuna bastigimizda direk A activiysi acilir.

 

baska bir seneryo;

 

bu sefer E den A ya gecelim;

ilk olarak 

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 

ekleyip gecis yaptigimiz zaman , history silinir ve direk uygulamadan cikar

 

ikinci olarak ;

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 

ile denedigimizde arada kalan B,C,D,E silinir ve direk uygulamadan cikar

 

son olarak 

A --> B --> C --> D -->

bu sefer flaglari C'den D'ye gecerken kullanalim

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 

ile denedigimizde history her zaman ki gibi silinir ve uygulamadan cikar geri dondugumuzde history olmadigi icin main activity calisir

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);

ile ise acikcasi hic birsey olmuyor arkadaslar  cunku backstack'in top'inda herhangi bir activity yok

bulabildigim bilgiler simdilik bunlar. yanlisim varsa duzeltirseniz sevinirim

 

test etmek icin yazdigim ufak uygulamanin githup linki ise asagidadir sizde calistirip test edebilirsiniz

https://github.com/cnkaptan/AndroidBackStackManipulate

Fatih Gürses
16.11.2020 - 07:32
yardımcı oldun ty bro
Ahmet Burak Demirkoparan
10.06.2015 - 07:03
Güzel bir araştırma olmuş. Adb üzerinden de activity back stackini vs görüntüleyebilirsin adb shell dumpsys activity | grep -i run şu komutu calıstırdığında göreceksin. Bilgilendirme için tşkler
picture-1372-1408467635.jpg
ahmtbrk
10.06.2015 - 09:39

Selamlar

http://stackoverflow.com/questions/3473168/clear-the-entire-history-stack-and-start-a-new-activity-on-android

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

önerilmiş